package cn.yuanqiao.archive.archiveFormSave.mapper;

import cn.yuanqiao.archive.archiveFormSave.domain.YqdaArchiveForm;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 归档申请单Mapper接口
 * 
 * @author yuanqiao
 * @date 2023-07-26
 */
public interface YqdaArchiveFormMapper 
{
    /**
     * 查询归档申请单
     * 
     * @param formId 归档申请单主键
     * @return 归档申请单
     */
    public YqdaArchiveForm selectYqdaArchiveFormByFormId(@Param("tenantCode")String tenantCode, @Param("formId") String formId);

    /**
     * 查询归档申请单列表
     * 
     * @param yqdaArchiveForm 归档申请单
     * @return 归档申请单集合
     */
    public List<YqdaArchiveForm> selectYqdaArchiveFormList(@Param("tenantCode")String tenantCode, @Param("yqdaArchiveForm")YqdaArchiveForm yqdaArchiveForm);

    /**
     * 新增归档申请单
     * 
     * @param yqdaArchiveForm 归档申请单
     * @return 结果
     */
    public int insertYqdaArchiveForm(@Param("tenantCode")String tenantCode, @Param("yqdaArchiveForm")YqdaArchiveForm yqdaArchiveForm);

    /**
     * 修改归档申请单
     * 
     * @param yqdaArchiveForm 归档申请单
     * @return 结果
     */
    public int updateYqdaArchiveForm(@Param("tenantCode")String tenantCode, @Param("yqdaArchiveForm")YqdaArchiveForm yqdaArchiveForm);

    /**
     * 删除归档申请单
     * 
     * @param formId 归档申请单主键
     * @return 结果
     */
    public int deleteYqdaArchiveFormByFormId(@Param("tenantCode")String tenantCode, @Param("formId")String formId);

    /**
     * 批量删除归档申请单
     * 
     * @param formIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteYqdaArchiveFormByFormIds(@Param("tenantCode")String tenantCode, @Param("formIds")String[] formIds);

    int batchInsertYqdaArchiveForm(@Param("tenantCode")String tenantCode, @Param("yqdaArchiveForms")List<YqdaArchiveForm> yqdaArchiveForms);

    List<Map<String, Object>> selectYqdaArchiveList(@Param("sql")String sql);

    void updateArchiveBySaveFormArchiveId(@Param("sql")String sql);

    int checkArchiveIsAddForm(@Param("tenantCode")String tenantCode, @Param("yqdaArchiveForms")List<YqdaArchiveForm> yqdaArchiveForms);

    int updateYqArchiveState(@Param("tenantCode")String tenantCode, @Param("yqdaArchiveForms")List<YqdaArchiveForm> yqdaArchiveForms);

    List<YqdaArchiveForm> selectYqdaArchiveFormsByFormIds(@Param("tenantCode")String tenantCode, @Param("formIds")String[] formIds);

    int checkArchiveUserCategoryForm(@Param("tenantCode")String tenantCode, @Param("yqdaArchiveForms")List<YqdaArchiveForm> yqdaArchiveForms);

    int checkArchiveUserHaveCategory(@Param("tenantCode")String tenantCode, @Param("yqdaArchiveForms")List<YqdaArchiveForm> yqdaArchiveForms);


    int batchUpdateByArchiveIdsAndUserId(@Param("tenantCode")String tenantCode, @Param("yqdaArchiveForm")YqdaArchiveForm yqdaArchiveForm);

    int batchUpdateByArchiveIds(@Param("tenantCode")String tenantCode, @Param("yqdaArchiveForm")YqdaArchiveForm yqdaArchiveForm);

    List<YqdaArchiveForm> selectYqdaArchiveFormsByArchiveIds(@Param("tenantCode")String tenantCode, @Param("archiveIds") String[] archiveIds, @Param("userId") Long userId);

    int deleteYqdaArchiveFormByArchiveIdsAndUserId(@Param("tenantCode")String tenantCode, @Param("archiveIds")String[] archiveIds, @Param("userId") Long userId);

    Integer getArchiveTotal(String sql);
}
